﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Facade.Interface;
using Crosland.Automotriz.Facade.Facade;
using System.Configuration;
using Crosland.Automotriz.Logic.Linq;
using Crosland.Automotriz.Logic.Funciones;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxDataView;

namespace Crosland.Automotriz.Web.Repuestos
{
    public partial class wFrmMaterialesActualizar : System.Web.UI.Page
    {
        private static iFacadeRegistroMaterial InterfaceMaterial;
        private static TD_MATERIAL objTD_MATERIAL;

        private static List<TD_MATERIAL> listaMaterial = null;
        private static List<TD_SECTOR> listaSector = null;
        private static List<TD_GRUPO_ARTICULO> listaGrupoArticulo = null;
        private static IEnumerable<Object> listaMarca = null;
        private static List<TD_MODELO> listaModelo = null;
        private static List<TD_JERARQUIA> listaJerarquia = null;

        private int intIdNegocio = Convert.ToInt32(ConfigurationManager.AppSettings["Negocio"]);
        private String strvOperacion = "C";
        private static String strMsg, strTitulo;
        private static List<Struct_T_LOG_MATERIAL_IMAGEN> listaMaterialImagen = null;
        const string UploadDirectory = "~/Archivos Imagen/Material/";

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                CargaGrupoArticulo();
                CargaSector();
                if (!IsPostBack)
                {
                    listaMaterialImagen = new List<Struct_T_LOG_MATERIAL_IMAGEN>();
                    CargaJerarquia();
                    strvOperacion = (Session["vOperacion"] != null) ? Session["vOperacion"].ToString() : "C";
                    if (strvOperacion == "M")
                    {
                        MostrarMaterial();
                        CargarImagenMaterialM(Convert.ToInt32(Session["intIdMaterial"]));

                    }
                    else
                    {
                        lblTipoABC.Text = "N";
                    }
                }
            }
            catch (Exception ex)
            {
                strTitulo = "Error Al Cargar La Pagina";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }



        private void CargarImagenMaterialM(int intIdMaterial)
        {
            clsT_Log_Material_ImagenLogic MateriaLogic = new clsT_Log_Material_ImagenLogic();
            try
            {
                foreach (var item in MateriaLogic.ListaPorIdMaterial(intIdMaterial))
                {
                    Struct_T_LOG_MATERIAL_IMAGEN Objmaterial = new Struct_T_LOG_MATERIAL_IMAGEN();
                    Objmaterial.ID_LOG_MATERIAL_IMAGEN = item.ID_LOG_MATERIAL_IMAGEN;
                    Objmaterial.ID_MATERIAL = item.ID_MATERIAL.Value;
                    Objmaterial.RUTA_IMAGEN = item.RUTA_IMAGEN;
                    Objmaterial.IND_PRINCIPAL = item.IND_PRINCIPAL == null ? false : item.IND_PRINCIPAL;
                    listaMaterialImagen.Add(Objmaterial);
                }
                dvFotosMaterial.DataSource = listaMaterialImagen;
                dvFotosMaterial.DataBind();
                
            }
            catch (Exception ex)
            {
                strTitulo = "Error Al Cargar La Foto ";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);

            }

        }



        private void CargarImagenMaterialC()
        {
            dvFotosMaterial.DataSource = listaMaterialImagen;
            dvFotosMaterial.DataBind();
        }




        private void CargaGrupoArticulo()
        {
            try
            {
                listaGrupoArticulo = new List<TD_GRUPO_ARTICULO>();
                InterfaceMaterial = new FacadeRegistroMaterial();
                listaGrupoArticulo = InterfaceMaterial.ListarGrupoArticulo();
                cboGrupoArticulo.DataSource = listaGrupoArticulo;
                cboGrupoArticulo.TextField = "DES_GRUPO_ARTICULO_2";
                cboGrupoArticulo.ValueField = "ID_GRUPO_ARTICULO";
                cboGrupoArticulo.DataBind();
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL CARGAR LOS GRUPOS DE ARTICULOS";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        private void CargaSector()
        {
            try
            {
                listaSector = new List<TD_SECTOR>();
                InterfaceMaterial = new FacadeRegistroMaterial();
                listaSector = InterfaceMaterial.ListarSector();
                cboSector.DataSource = listaSector;
                cboSector.TextField = "DES_SECTOR";
                cboSector.ValueField = "ID_SECTOR";
                cboSector.DataBind();
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL CARGAR LOS SECTORES";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        private void CargaMarca(String strNroRueda)
        {
            try
            {
                int? intvacio = null;
                strvOperacion = strvOperacion = (Session["vOperacion"] != null) ? Session["vOperacion"].ToString() : "C";
                int? intIndAsignado = (Session["intIndAsignado"] != null) ? Convert.ToInt32(Session["intIndAsignado"]) : intvacio;
                listaMarca = new List<Object>();
                InterfaceMaterial = new FacadeRegistroMaterial();
                if (intIndAsignado != null)
                {
                    strvOperacion = (intIndAsignado == 0) ? "C" : strvOperacion;
                    Session["intIndAsignado"] = 0;
                }
                listaMarca = InterfaceMaterial.listaMarcaActivoxRueda(strNroRueda, strvOperacion);
                cboMarca.DataSource = listaMarca;
                cboMarca.TextField = "DES_MARCA";
                cboMarca.ValueField = "ID_MARCA";
                cboMarca.DataBind();
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL CARGAR LAS MARCAS";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        private void CargaModelo(String strNroRuedas, int intIdMarca)
        {
            try
            {
                int? intvacio = null;
                strvOperacion = (Session["vOperacion"] != null) ? Session["vOperacion"].ToString() : "C";
                listaModelo = new List<TD_MODELO>();
                InterfaceMaterial = new FacadeRegistroMaterial();
                int? intIndAsignado = (Session["intIndAsignado"] != null) ? Convert.ToInt32(Session["intIndAsignado"]) : intvacio;
                if (intIndAsignado != null)
                {
                    strvOperacion = (intIndAsignado == 0) ? "C" : strvOperacion;
                    Session["intIndAsignado"] = 2;
                }
                listaModelo = InterfaceMaterial.ListarModelo(strNroRuedas, intIdMarca, strvOperacion);
                if (listaModelo.Count == 0 || listaModelo == null)
                {
                    strMsg = "No Hay Datos Para La Marca y Nro de Rueda Seleccionado";
                    cboModelo.Enabled = false;
                    cboModelo.Value = null;
                    MostrarComentario(strMsg);
                    return;
                }
                cboModelo.DataSource = listaModelo;
                cboModelo.TextField = "DES_MODELO";
                cboModelo.ValueField = "ID_MODELO";
                cboModelo.DataBind();
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL CARGAR LOS MODELOS";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        protected void ObtenerMarca(object sender, EventArgs e)
        {
            try
            {
                String strNroRueda = (cboRuedas.Value != null) ? cboRuedas.SelectedItem.Value.ToString() : null;
                cboMarca.Enabled = true;
                cboMarca.Value = null;
                cboMarca.Text = null;
                cboModelo.Enabled = false;
                cboModelo.Value = null;
                cboModelo.Text = null;
                txtIndBaja.Text = "";
                lblAnulado.Text = "";
                CargaMarca(strNroRueda);
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL CARGAR LAS MARCAS";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        protected void ObtenerModelo(object sender, EventArgs e)
        {
            try
            {
                String strNroRuedas = cboRuedas.SelectedItem.Value.ToString();
                int intIdMarca = Convert.ToInt32(cboMarca.SelectedItem.Value);
                cboModelo.Enabled = true;
                cboModelo.Value = null;
                cboModelo.Text = null;
                txtIndBaja.Text = "";
                lblAnulado.Text = "";
                CargaModelo(strNroRuedas, intIdMarca);

            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL CARGAR LOS MODELOS";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        protected void ObtenerIndBaja(object sender, EventArgs e)
        {
            try
            {
                int? intIndBaja;
                int intIdModelo = (cboModelo.Value != null) ? Convert.ToInt32(cboModelo.SelectedItem.Value) : 0;
                InterfaceMaterial = new FacadeRegistroMaterial();
                intIndBaja = InterfaceMaterial.ObtenerIndBajaModelo(intIdModelo);
                if (intIndBaja == 1)
                {
                    lblAnulado.Text = "Modelo Anulado";
                }
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL MOSTRAR EL INDBAJA DEL MODELO SELECCIONADO.";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        private void CargaJerarquia()
        {
            try
            {
                listaJerarquia = new List<TD_JERARQUIA>();
                InterfaceMaterial = new FacadeRegistroMaterial();
                listaJerarquia = InterfaceMaterial.ListarJerarquia(txtBuscar.Text.Trim());

                if (listaJerarquia == null || listaJerarquia.Count == 0)
                {
                    strMsg = "No Hay Datos Para Las Jerarquias";
                    MostrarComentario(strMsg);
                    return;
                }

                grdTD_JERARQUIA.DataSource = listaJerarquia;
                grdTD_JERARQUIA.DataBind();
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL CARGAR LAS JERARQUIAS";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        protected void grdTD_JERARQUIA_PageIndexChanged(object sender, EventArgs e)
        {
            CargaJerarquia();
        }

        protected void grdTD_JERARQUIA_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            CargaJerarquia();
        }

        protected void AgregarJerarquia(object sender, EventArgs e)
        {
            try
            {
                int intIndexJerarquia = grdTD_JERARQUIA.FocusedRowIndex;
                if (intIndexJerarquia == -1)
                {
                    strMsg = "No Se Ha Seleccionado una Jerarquia";
                    MostrarComentario(strMsg);
                    return;
                }

                int intIdJerarquia = Convert.ToInt32(grdTD_JERARQUIA.GetRowValues(intIndexJerarquia, "ID_JERARQUIA"));
                String strCodJerarquia = grdTD_JERARQUIA.GetRowValues(intIndexJerarquia, "COD_JERARQUIA").ToString();
                String strDesJerarquia = grdTD_JERARQUIA.GetRowValues(intIndexJerarquia, "DES_JERARQUIA").ToString();

                txtidJerarquia.Text = intIdJerarquia.ToString();
                txtcodJerarquia.Text = strCodJerarquia;
                txtnomJerarquia.Text = strDesJerarquia;
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL AGREGAR LA JERARQUIA";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        private void MostrarMaterial()
        {
            try
            {
                //habilitando cotroles
                cboMarca.Enabled = true;
                cboModelo.Enabled = true;


                int? intvacio = null;
                int intIdMaterial = Convert.ToInt32(Session["intIdMaterial"]);
                int? intIndAsignado = (Session["intIndAsignado"] != null) ? Convert.ToInt32(Session["intIndAsignado"]) : intvacio;
                listaMaterial = new List<TD_MATERIAL>();
                InterfaceMaterial = new FacadeRegistroMaterial();
                listaMaterial = InterfaceMaterial.listar(intIdMaterial);

                if (listaMaterial == null || listaMaterial.Count == 0)
                {
                    strMsg = "No Hay Datos Para El Material Seleccionado";
                    Redireccionar(strMsg, false);
                    return;
                }

                int intIdGrupoArticulo, intIdSector, intIdModelo, intIdJerarquia, intIdMarca, intIndBaja;
                String strCodMaterial, strDesMaterial, strPartida, strTipoABC, strNroRuedas, strDesJerarquia, strCodJerarquia;

                intIdGrupoArticulo = listaMaterial[0].ID_GRUPO_ARTICULO;
                intIdSector = listaMaterial[0].ID_SECTOR;

                strCodMaterial = listaMaterial[0].COD_MATERIAL;
                strDesMaterial = listaMaterial[0].DES_MATERIAL;

                lblTipoABC.Text = listaMaterial[0].TIPO_ABC;

                lblIdMaterial.Text = intIdMaterial.ToString();
                txtCodMaterial.Text = strCodMaterial;
                txtDescripMaterial.Text = strDesMaterial;

                txtCodMaterial.Enabled = false;



                if (intIndAsignado != 0)
                {
                    intIdModelo = listaMaterial[0].ID_MODELO;
                    intIdJerarquia = listaMaterial[0].ID_JERARQUIA;
                    intIdMarca = listaMaterial[0].TD_MODELO.ID_MARCA;

                    strPartida = listaMaterial[0].PARTIDA;
                    strTipoABC = listaMaterial[0].TIPO_ABC;
                    strNroRuedas = listaMaterial[0].TD_MODELO.TIP_NUM_RUEDA;
                    strDesJerarquia = listaMaterial[0].TD_JERARQUIA.DES_JERARQUIA;
                    strCodJerarquia = listaMaterial[0].TD_JERARQUIA.COD_JERARQUIA;
                    intIndBaja = listaMaterial[0].TD_MODELO.IND_BAJA;

                    //cboGrupoArticulo.Value = intIdGrupoArticulo.ToString();
                    cboGrupoArticulo.Text = intIdGrupoArticulo.ToString();
                    cboSector.Value = intIdSector.ToString();
                    cboRuedas.Value = strNroRuedas;

                    txtidJerarquia.Text = intIdJerarquia.ToString();
                    txtcodJerarquia.Text = strCodJerarquia;
                    txtnomJerarquia.Text = strDesJerarquia;

                    CargaMarca(strNroRuedas);
                    cboMarca.Value = intIdMarca.ToString();
                    CargaModelo(strNroRuedas, intIdMarca);
                    cboModelo.Value = intIdModelo.ToString();
                    txtIndBaja.Text = intIndBaja.ToString();
                    String strIndBajaMsg = (intIndBaja == 1) ? "Modelo Anulado" : "";
                    lblAnulado.Text = strIndBajaMsg;
                }

            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL MOSTRAR LOS DATOS DEL MATERIAL";
                strMsg = String.Format("{0}||{1}", ex.InnerException, ex.Message);
                MostrarComentario(strMsg, strTitulo);
            }
        }

        protected void Salir(object sender, EventArgs e)
        {
            Session["vOperacion"] = "C";
            Session["vOperacion2"] = "M";
            Response.Redirect("~/Repuestos/wFrmMateriales.aspx?id=" + intIdNegocio);
        }

        protected void GrabarMaterial(object sender, EventArgs e)
        {
            Grabar();
        }

        public void Grabar()
        {
            try
            {
                Boolean boolValidarCampos = true;
                boolValidarCampos = ValidarCampos();

                if (boolValidarCampos == false)
                {
                    return;
                }

                Boolean boolGrabacion = false;

                int intIdMaterial, intIdGrupoArticulo, intIdSector, intIdModelo, intIdJerarquia;
                String strCodMaterial, strDesMaterial, strPartida, strTipoABC;
                String strCodGrupoArticulo, strCodSector, strCodArticuloServ = "";

                strTipoABC = "N";

                intIdGrupoArticulo = Convert.ToInt32(cboGrupoArticulo.SelectedItem.Value);
                intIdSector = Convert.ToInt32(cboSector.SelectedItem.Value);
                intIdModelo = Convert.ToInt32(cboModelo.SelectedItem.Value);
                intIdJerarquia = Convert.ToInt32(txtidJerarquia.Text.Trim());

                strCodMaterial = txtCodMaterial.Text.Trim();
                strDesMaterial = txtDescripMaterial.Text.Trim();
                strPartida = txtPartida.Text.Trim();


                strvOperacion = (Session["vOperacion"] != null) ? Session["vOperacion"].ToString() : "C";
                InterfaceMaterial = new FacadeRegistroMaterial();
                if (strvOperacion == "C")
                {
                    strTipoABC = "N";
                    if (InterfaceMaterial.VerificarCodigo(strCodMaterial) == false)
                    {
                        strMsg = "El Codigo del Material Ya Esta Registrado.";
                        MostrarComentario(strMsg);
                        return;
                    }
                }

                strCodGrupoArticulo = InterfaceMaterial.Cod_Grupo_Articulo(intIdGrupoArticulo);
                strCodSector = InterfaceMaterial.Cod_Sector(intIdSector);

                objTD_MATERIAL = new TD_MATERIAL();

                if (strvOperacion == "M")
                {
                    intIdMaterial = Convert.ToInt32(Session["intIdMaterial"].ToString());
                    objTD_MATERIAL.ID_MATERIAL = intIdMaterial;
                    strTipoABC = lblTipoABC.Text.Trim();
                }

                objTD_MATERIAL.COD_MATERIAL = strCodMaterial;
                objTD_MATERIAL.DES_MATERIAL = strDesMaterial;
                objTD_MATERIAL.ID_GRUPO_ARTICULO = intIdGrupoArticulo;
                objTD_MATERIAL.ID_SECTOR = intIdSector;
                objTD_MATERIAL.ID_JERARQUIA = intIdJerarquia;
                objTD_MATERIAL.ID_MODELO = intIdModelo;
                objTD_MATERIAL.PARTIDA = strPartida;
                objTD_MATERIAL.TIPO_ABC = strTipoABC;
                objTD_MATERIAL.COD_GRUPO_ARTICULO = strCodGrupoArticulo;
                objTD_MATERIAL.COD_SECTOR = strCodSector;
                objTD_MATERIAL.COD_ARTICULO_SERV = strCodArticuloServ;

                if (strvOperacion == "C")
                {
                    objTD_MATERIAL.FEC_CREACION = DateTime.Now;
                }

                boolGrabacion = (strvOperacion == "C") ? InterfaceMaterial.Insertar(objTD_MATERIAL) : InterfaceMaterial.Modificar(objTD_MATERIAL);
                if (strvOperacion == "C")
                {

                    clsTD_MaterialLogic MateriaLogic = new clsTD_MaterialLogic();
                    clsT_Log_Material_ImagenLogic MaterialImagen = new clsT_Log_Material_ImagenLogic();
                   
                   int idMaterial = MateriaLogic.RetorIDMaterial(strCodMaterial);

                   for (int i = 0; i < dvFotosMaterial.VisibleItems.Count; i++)
                   {


                       DataViewItem item = dvFotosMaterial.Items[i];
                       CheckBox checkBox = (CheckBox)dvFotosMaterial.FindItemControl("CheckBox1", item);
                       ASPxLabel txtDesc = (ASPxLabel)dvFotosMaterial.FindItemControl("txtDescripcion", item);
                      
                        int intUltimoId = MaterialImagen.UltimoNumero() + 1;                        
                        String strExtension = LeftRightMid.Right(txtDesc.Text, 4);
                        
                        String strNuevoName = intUltimoId + "_" + strCodMaterial+""+strExtension;

                        T_LOG_MATERIAL_IMAGEN ObjMateriaImagen = new T_LOG_MATERIAL_IMAGEN();
                        ObjMateriaImagen.ID_LOG_MATERIAL_IMAGEN =intUltimoId;
                        ObjMateriaImagen.ID_MATERIAL =idMaterial;
                        ObjMateriaImagen.RUTA_IMAGEN =strNuevoName;
                        ObjMateriaImagen.IND_PRINCIPAL = checkBox.Checked;
                        MaterialImagen.Insertar(ObjMateriaImagen);
                   
                        File.Move(MapPath(ConfigurationManager.AppSettings["RutaFotoMaterial"] + "/" + txtDesc.Text), MapPath(ConfigurationManager.AppSettings["RutaFotoMaterial"] + "/" + strNuevoName));
                        
                        
                    }

                    strMsg = (boolGrabacion) ? "Material Grabado Correctamente" : "Error Al Grabar El Material";
                }
                else if (strvOperacion == "M")
                {
                    if (boolGrabacion == true)
                    {


                        clsTD_MaterialLogic MateriaLogic = new clsTD_MaterialLogic();
                        clsT_Log_Material_ImagenLogic MaterialImagen = new clsT_Log_Material_ImagenLogic();

                        int idMaterial = MateriaLogic.RetorIDMaterial(strCodMaterial);

                         MaterialImagen.EliminaPorIdMaterial(idMaterial);
                        
                        for (int i = 0; i < dvFotosMaterial.VisibleItems.Count; i++)
                        {


                            DataViewItem item = dvFotosMaterial.Items[i];
                            CheckBox checkBox = (CheckBox)dvFotosMaterial.FindItemControl("CheckBox1", item);
                            ASPxLabel txtDesc = (ASPxLabel)dvFotosMaterial.FindItemControl("txtDescripcion", item);

                            int intUltimoId = MaterialImagen.UltimoNumero() + 1;
                            String strExtension = LeftRightMid.Right(txtDesc.Text, 4);
                            String strNuevoName = intUltimoId + "_" + strCodMaterial + "" + strExtension;

                            T_LOG_MATERIAL_IMAGEN ObjMateriaImagen = new T_LOG_MATERIAL_IMAGEN();
                            ObjMateriaImagen.ID_LOG_MATERIAL_IMAGEN = intUltimoId;
                            ObjMateriaImagen.ID_MATERIAL = idMaterial;
                            ObjMateriaImagen.RUTA_IMAGEN = strNuevoName;
                            ObjMateriaImagen.IND_PRINCIPAL = checkBox.Checked;
                            MaterialImagen.Insertar(ObjMateriaImagen);
                            if (txtDesc.Text != strNuevoName)
                            {
                                File.Delete(MapPath(ConfigurationManager.AppSettings["RutaFotoMaterial"] + "/" + strNuevoName));
                                File.Move(MapPath(ConfigurationManager.AppSettings["RutaFotoMaterial"] + "/" + txtDesc.Text), MapPath(ConfigurationManager.AppSettings["RutaFotoMaterial"] + "/" + strNuevoName));
                            }                         
                          
                        }


                        int? intvacio = null;
                        int? intIndAsignado = (Session["intIndAsignado"] != null) ? Convert.ToInt32(Session["intIndAsignado"]) : intvacio;
                        strMsg = (boolGrabacion) ? "Material Actualizado Correctamente" : "Error Al Actualizar El Material";
                        if (intIndAsignado == 2)
                        {
                            Boolean boolActualizarEstado = InterfaceMaterial.ActualizaTMaterialPorAsignar(intIdGrupoArticulo, intIdSector, intIdJerarquia, intIdModelo, strCodMaterial);
                            strMsg = (boolActualizarEstado) ? "Material Actualizado Correctamente" : "Error Al Actualizar El Estado del Material por Asignar.";
                        }
                    }
                }

                if (boolGrabacion)
                {

                    Redireccionar(strMsg, boolGrabacion);
                }
                else
                {
                    MostrarComentario(strMsg);
                }

            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL GRABAR EL MATERIAL";
                strMsg = ex.Message;
                MostrarComentario(strMsg, strTitulo);
            }
        }

        private Boolean ValidarCampos()
        {
            Boolean boolValidarCampos = true;
            try
            {
                if (txtCodMaterial.Text.Trim() == "")
                {
                    boolValidarCampos = false;
                    strMsg = "Debe Ingresar El Codigo del Material";
                }
                else if (txtDescripMaterial.Text.Trim() == "")
                {
                    boolValidarCampos = false;
                    strMsg = "Debe Ingresar La Descripcion del Material";
                }
                else if (cboGrupoArticulo.Value == null)
                {
                    boolValidarCampos = false;
                    strMsg = "Debe Seleccionar una Grupo de Articulo";
                }
                else if (cboSector.Value == null)
                {
                    boolValidarCampos = false;
                    strMsg = "Debe Seleccionar una Sector";
                }
                else if (txtidJerarquia.Text.Trim() == "")
                {
                    boolValidarCampos = false;
                    strMsg = "Debe Seleccionar una Jerarquia";
                }
                else if (cboRuedas.Value == null)
                {
                    boolValidarCampos = false;
                    strMsg = "Debe Seleccionar un Nro de Rueda";
                }
                else if (cboMarca.Value == null)
                {
                    boolValidarCampos = false;
                    strMsg = "Debe Seleccionar una Marca";
                }
                else if (cboModelo.Value == null)
                {
                    boolValidarCampos = false;
                    strMsg = "Debe Seleccionar un Modelo";
                }
            }
            catch (Exception ex)
            {
                strTitulo = "ERROR AL VALIDAR LOS CAMPOS";
                strMsg = ex.Message;
                boolValidarCampos = false;
            }
            if (boolValidarCampos == false)
            {
                MostrarComentario(strMsg);
            }
            return boolValidarCampos;
        }


        private void Redireccionar(String strMsg, Boolean boolGrabacion)
        {
            Session["strMsg"] = strMsg;
            Session["boolGrabacion"] = boolGrabacion;
            Session["vOperacion"] = "C";
            Session["vOperacion2"] = "M";

            Response.Redirect("~/Repuestos/wFrmMateriales.aspx?id=" + intIdNegocio, true);
        }

        private void MostrarComentario(String msg)
        {
            CargarAlert(msg, "Mensaje");
        }

        private void MostrarComentario(String msg, String titulo)
        {
            CargarAlert(msg, titulo);
        }

        private void CargarAlert(String msg, String titulo)
        {
            popupmsj.HeaderText = titulo;
            lblmsj.Text = msg;
            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", "popupmsj.Show()", true);
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            CargaJerarquia();
        }

        protected void UploadControl_FileUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FileUploadCompleteEventArgs e)
        {

            Struct_T_LOG_MATERIAL_IMAGEN ObjStructMaterialImagen = new Struct_T_LOG_MATERIAL_IMAGEN();
            int idMaterial = 0;

            String rutaimagen = String.Format("{0}_{1}", 99999, e.UploadedFile.FileName);
            ObjStructMaterialImagen.ID_LOG_MATERIAL_IMAGEN = 0;
            ObjStructMaterialImagen.ID_MATERIAL = idMaterial;
            ObjStructMaterialImagen.RUTA_IMAGEN = rutaimagen;
            ObjStructMaterialImagen.IND_PRINCIPAL = false;
            listaMaterialImagen.Add(ObjStructMaterialImagen);
            string resultFilePath = UploadDirectory + rutaimagen;//e.UploadedFile.FileName;

           System.Drawing.Image img= RedimensionarImagen(e.UploadedFile.PostedFile.InputStream);
           img.Save(MapPath(resultFilePath));

        }

        private static System.Drawing.Image RedimensionarImagen(Stream stream)
        {

            System.Drawing.Image img = System.Drawing.Image.FromStream(stream);

            const int max = 700;

            int h = img.Height;
            int w = img.Width;
            int newH, newW;

            if (h > w && h > max)
            {

                newH = max;
                newW = (w * max) / h;
            }
            else if (w > h && w > max)
            {

                newW = max;
                newH = (h * max) / w;
            }
            else
            {
                newH = h;
                newW = w;
            }
            if (h != newH && w != newW)
            {

                Bitmap newImg = new Bitmap(img, newW, newH);
                Graphics g = Graphics.FromImage(newImg);
                g.InterpolationMode =
                  System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
                g.DrawImage(img, 0, 0, newImg.Width, newImg.Height);
                return newImg;
            }
            else
                return img;
        }


        private struct Struct_T_LOG_MATERIAL_IMAGEN
        {
            public int ID_LOG_MATERIAL_IMAGEN { get; set; }
            public int ID_MATERIAL { get; set; }
            public String RUTA_IMAGEN { get; set; }
            public bool? IND_PRINCIPAL { get; set; }       

        }

        protected void btnDetalle_Click(object sender, EventArgs e)
        {
            //this.RenombrarImagen();
            if (strvOperacion == "M")
            {
                CargarImagenMaterialM(Convert.ToInt32(Session["intIdMaterial"]));

            }
            else if (strvOperacion == "C")
            {

                CargarImagenMaterialC();
            }

        }

        protected void dvFotosMaterial_ItemCommand(object source, DevExpress.Web.ASPxDataView.DataViewItemCommandEventArgs e)
        {
                Session["RUTA_IMAGEN"] = Convert.ToString(e.CommandArgument);
                PopupMsjConfirmacion.ShowOnPageLoad = true;             
        }

        protected void btnPopAceptar_Click(object sender, EventArgs e)
        {

            listaMaterialImagen.Remove(listaMaterialImagen.Where(x => x.RUTA_IMAGEN == Session["RUTA_IMAGEN"].ToString()).ToList()[0]);
            File.Delete(MapPath(ConfigurationManager.AppSettings["RutaFotoMaterial"] + "/" + Session["RUTA_IMAGEN"].ToString()));
            dvFotosMaterial.DataSource = listaMaterialImagen;
            dvFotosMaterial.DataBind();
            PopupMsjConfirmacion.ShowOnPageLoad = false;

        }

    }
}